Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
Звіт
до лабораторної роботи №4
з дисципліни «Операційні системи»
Тема « Завантаження та виконання програм DOS. Організація програм *.ЕХЕ та *.СОМ »
Варіант 3
КИЇВ-2022
Мета роботи: ознайомитися зі структурою виконуваних програм *.ЕХЕ та *.СОМ та їх образом в пам’яті.Теоретична частина:
Операційна система MS DOS передбачає два типи виконуваних програм, які мають розширення *.СОМ та *.ЕХЕ .
Перед завантаженням в оперативну пам’ять СОМ- та ЕХЕ-програм DOS визначає спеціальну область оперативної пам’яті розміром 256 (100h) байт - сегментну адресу, яка називається префіксом програмного сегменту (PSP – Program Segment Prefics). PSP може використовуватися в програмі для визначення імен файлів та параметрів з командного рядка, які вводяться при запуску програми на виконання, обсягу допустимої пам'яті, змінних оточення системи та ін.
При завантаженні програми в оперативну пам’ять DOS ініціалізує як мінімум три сегментних регістри: CS, DS, SS (додатковим може бути ES). Код та дані переміщуються з файлу на диску в оперативну пам’ять, а адреси цих сегментів заносяться у CS та DS відповідно. Сегмент стека або виділяється в області, що вказана в програмі, або співпадає (якщо він явно не описаний в програмі) з самим першим сегментом програми. Адреса сегменту стека розташовується в регістрі SS. Програма може мати декілька кодових сегментів та сегментів даних і в процесі виконання за допомогою спеціальних команд здійснюється переключення між ними.
Для того, щоб адресувати одночасно два сегменти даних, наприклад, для виконання операції пересилання з однієї області пам’яті в іншу, можна використовувати регістр додаткового сегмента ES. Кодовий сегмент та сегмент стеку завжди визначається вмістом своїх регістрів (CS та SS), в кожний момент виконання програми завжди використовується якийсь один кодовий сегмент та один сегмент стека.
Основні відмінності цих програм полягають у наступному:
програми типу *.СОМ (двійковий образ коду та даних програми)
складаються тільки з одного сегменту, в якому розміщується і код програми, і дані, і стек;
файл СОМ-формату не містить переміщуваних адрес;
СОМ-файл завантажується, починається з адреси PSP:0100h;
CS, DS, ES, SS вказують на PSP;
SP вказує на кінець сегмента PSP (зазвичай 0FFFEh);
ІР містить 100h в результаті команди JMP PSP:100h;
розмір програми типу *.СОМ не може перевищувати 64 Кбайт;
використовується модель пам’яті TINY;
образ СОМ-файла зчитується з диску та розташовується в пам’яті, починаючи PSP:0100h;
програма генерує стек автоматично, тому в самій асемблерній програмі стек має бути відсутнім; усі дані повинні бути визначені у сегменті коду;
в програмах типу *.ЕХЕ міститься спеціальний заголовок, за допомогою якого завантажувач виконує налаштування посилань на сегменти у завантаженому модулі
використовуються окремі сегменти і для коду, і для даних, і для стеку;
розмір програми типу *.ЕХЕ не має жорстких обмежень, тому що програми може мати будь-яку кількість сегментів команд та даних;
ЕХЕ-файл завантажується, починається з адреси PSP:0100h;
DS та ES вказують на початок PSP;
CS, IP, SS, SP ініціалізуються значеннями, зазначеними в заголовку ЕХЕ;
використовується модель пам’яті SMALL, яка передбачає розташування структурних частин програми у двох сегментах: сегменту кода програми (64 Кбайт) та сегменту даних і стека , що належать одній групі Dgroup (64 Кбайт).
Завершення програми можна виконати декількома способами:
через функцію 4СН (EXIT) переривання 21Н в будь-який момент, незалежно від значень регістрів;
через функцію 00Н переривання 21Н або переривання INT 20H, у випадку коли CS вказує PSP.
Програми типу *.ЕХЕ та *.СОМ розрізняються форматом вхідного тексту, процедурою підготовки виконуваного файлу, а також форматами завантажувальних файлів.
Для створення Е...